home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / e / amigae30a_fr.lha / AmigaE30f / Sources / Tools / LongReal / longdemo.e next >
Encoding:
Text File  |  1994-10-04  |  2.9 KB  |  87 lines

  1. /* programme exemple pour le module longreal */
  2. /* Par EA van Breemen 1994                   */
  3.  
  4.  
  5. /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
  6. /* Pour utiliser les fonctions de conversion, prenez le type */
  7. /* STRING pour les tampons, pas ARRAY. Sinon les fonctions   */
  8. /* produiront des résultats non attendus                     */
  9.  
  10. /* Notez des erreurs d'arrondi peuvent arriver ceci à cause  */
  11. /* de l'IEEE                                                 */
  12. /* Dans les futures distribution, ce sera réparé             */
  13.  
  14.  
  15. /* Quelques notes sur les fonctions en réels longs           */
  16.  
  17. /* Beaucoup de fonctions sont décrites dans les ROMKernals.  */
  18. /* Regardez le chapitre sur les fonctions IEEE               */
  19. /* Il y a 3 fonctions de conversion ascii-longreal           */
  20.  
  21. /* dFormat(buffer,x,num)  -> convertis le nombre fractionnel x avec
  22.                              num digits en une chaine du buffer
  23.  
  24.    dLFormat(buffer,x,num) -> même que dFormat, mais maintenant aussi
  25.                              de grand nombres ie 1.2e250
  26.  
  27.    a2d(buffer,x)          -> l'inverse de dLFormat: convertis une
  28.                              chaine ascii du buffer en longreal x
  29. */
  30.  
  31.  
  32. /* Incluez ce module pour utilisez les longreals */
  33.  
  34. MODULE 'tools/longreal'
  35.  
  36.  
  37. /* Notre petit programme Main */
  38.  
  39. PROC main()
  40.   DEF buffer[256]:STRING     /* Très important: utilisez STRING pour le buffer !!!! */
  41.   DEF a:longreal             /* Notre variable réel long pour les résulats          */
  42.   DEF i                      /* Un simple compteur                                  */
  43.  
  44.   dInit()                    /* Initialise le module avant l'utilisation */
  45.  
  46.   WriteF('D'abord quelques conversions:\n')
  47.   WriteF('Lecture de 1.234567      -> donne: ')
  48.  
  49.   a2d('1.234567',a)          /* Convertis de l'ascii en longreal */
  50.   dFormat(buffer,a,6)        /* et retour (6 digits)             */
  51.   WriteF('\s\n',buffer)      /* L'affiche                        */
  52.  
  53.   WriteF('Lecture de +1.234567e-2  -> donne: ')
  54.  
  55.   a2d('+1.234567e-2',a)      /* Convertis de l'ascii en longreal */
  56.   dFormat(buffer,a,6)        /* et retour (6 digits)             */
  57.   WriteF('\s\n',buffer)      /* L'affiche                        */
  58.  
  59.  
  60.   WriteF('Lecture de -1.234567E100 -> donne: ')
  61.  
  62.   a2d('-1.234567E100',a)     /* Convertis de l'ascii en longreal */
  63.  
  64. /* Maintenant le nombre est trop grand pour dFormat, on utilise dLFormat */
  65.  
  66.   dLFormat(buffer,a,6)       /* et retour (6 digits)             */
  67.   WriteF('\s\n',buffer)      /* L'affiche                        */
  68.  
  69.   WriteF('Maintenant, autre chose\n')
  70.  
  71.   FOR i:=1 TO 16
  72.     WriteF('PI=\s \n',dFormat(buffer,dPi(a),i))
  73.   ENDFOR
  74.  
  75.   WriteF('A sinus table\n')
  76.   FOR i:=0 TO 360 STEP 45
  77.     dFloat(i,a)              /* Convertis un entier en un longreal */
  78.     dSin(dRad(a))
  79.     WriteF('Sin(\d)=\s \n',i,dLFormat(buffer,a,15))
  80.   ENDFOR
  81.  
  82.   WriteF('Find de longdemo\n')
  83.  
  84.   dCleanup()                 /* Nettoie le module après utilisation */
  85.  
  86. ENDPROC
  87.